﻿using System.Configuration;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

using System.Windows.Controls.DataVisualization;
using System.Windows.Controls.Primitives;
using System.Windows.Controls.DataVisualization.Charting;

using Oracle.DataAccess.Client;

using produccion.clases;
using produccion.modelo;
using produccion.AccesoDatos;
using produccion.vistamodelo;
using System.Data;

namespace produccion.forms
{
    /// <summary>
    /// Lógica de interacción para FrmCumplimientoEntregaPedidos.xaml
    /// </summary>
    public partial class FrmCumplimientoEntregaPedidos : Window
    {
        string _ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.1.10)(PORT=1521))(CONNECT_DATA=(SID=BDSIC)));User Id=USU_FBR;Password=SIS2002;";
        public FrmCumplimientoEntregaPedidos()
        {
            InitializeComponent();
            TxbCodigoCliente.Text = " ";
        }
        private void CumplimientoEntregaPedidos_Loaded(object sender, RoutedEventArgs e)
        {
            TxbCodigoCliente.Focus();
        }
        public void PubV_BuscarDato(Boolean BooEjecutarSp, String StrAñoSeleccionado, String StrCliente, String StrTipo)
        {
            Int32 Int32Año;
            String StrClienteInicial;

            String StrClienteFinal;

            if (StrAñoSeleccionado.Length == 4)
            {
                Int32Año = Convert.ToInt32(TbxAño.Text);//FJRF - Variable que meneja el año
            }
            else
            {
                DateTime DttFecha = DateTime.Now;
                Int32Año = Convert.ToInt32(DttFecha.Year.ToString());
            }
            if (StrCliente.Trim() == "")
            {
                StrClienteInicial = "   ";
                StrClienteFinal = "ZZZ";
            }
            else
            {
                StrClienteInicial = StrCliente;
                StrClienteFinal = StrCliente;
            }

            if (BooEjecutarSp == true)
            {
                PubDts_EjecutarSp(Int32Año, StrClienteInicial, StrClienteFinal);//FJRF - Cargamos los datos iniciales de la consulta
            }

            Boolean BooDatoExiste = false;//FJRF - Variable para validar si existen o no datos al ejecutar la consulta
            Oracle.DataAccess.Client.OracleConnection _Conn = new Oracle.DataAccess.Client.OracleConnection(_ConnectionString);//FJRF - Establecemos la cadena de conexion

            _Conn.Open();//FJRF - Abrimos la conexion
            Oracle.DataAccess.Client.OracleDataAdapter _Adapter = new Oracle.DataAccess.Client.OracleDataAdapter("SELECT * from tmprescumpedmes WHERE tipo_tmp = '" + StrTipo + "' and codcli_tmp = ' ' order by tipo_tmp, codcli_tmp, nroped_tmp", _Conn);
            DataSet _Bind = new DataSet();

            _Adapter.Fill(_Bind, "MyDataBinding");//FJRF - Ejecutamos la consulta
            
            _Conn.Close();//FJRF - Cerramos la conexion

            DataTable dt = _Bind.Tables[0];//FJRF - Se almacenan los datos en una tabla

            Double DblCantidadCumplimiento = 0;//FJRF - Varible que acumulara el valor cumplido
            Double DblCantidadIncumplimiento = 0;//FJRF - Varible que acumulara el valor cumplido
            Double DblPorcentajeCumplimiento = 0;//FJRF - Varible que acumulara el valor cumplido
            Double DblPorcentajeIncumplimiento = 0;//FJRF - Varible que acumulara el valor cumplido

            int IntCantidadDeDatos = 0;//FJRF - Varible que acumulara la cantidad de datos o registros en la tabla

            foreach (DataRow row in dt.Rows)//FJRF - Recorremos los datos de la tabla para hacer la sumatoria de los datos
            {
                IntCantidadDeDatos++;//FJRF - Contamos la cantidad de registros

                DblCantidadCumplimiento = Convert.ToDouble(row["CANCUM_TMP"].ToString());//FJRF - Sumamos el cumplimiento
                DblCantidadIncumplimiento = Convert.ToDouble(row["CANINC_TMP"].ToString());//FJRF - Sumamos el incumplimiento

                DblPorcentajeCumplimiento = Convert.ToDouble(row["PORCUM_TMP"].ToString());//FJRF - Sumamos el cumplimiento
                DblPorcentajeIncumplimiento = Convert.ToDouble(row["PORINC_TMP"].ToString());//FJRF - Sumamos el incumplimiento

                //FJRF - Generamos el grafico
                ((PieSeries)mcChart.Series[0]).ItemsSource = new KeyValuePair<string, double>[]
                {
                    new KeyValuePair<string, double>("CUM: ("+ DblPorcentajeCumplimiento +")", DblCantidadCumplimiento),
                    new KeyValuePair<string, double>("INC: ("+ DblPorcentajeIncumplimiento +")", DblCantidadIncumplimiento)
                    //new KeyValuePair<string, double>("("+ DblPorcentajeCumplimiento +") - CUMPLIMIENTO", DblCantidadCumplimiento),
                    //new KeyValuePair<string, double>("("+ DblPorcentajeIncumplimiento +") - INCUMPLIMIENTO", DblCantidadIncumplimiento)
                }; 

                BooDatoExiste = true;//FJRF - Informamos que si existen datos
            }
        }
        #region Ejecutar el SP
        public DataSet PubDts_EjecutarSp(Int32 Int32Año, string StrClienteInicial, string StrClienteFinal)
        {
            using (Oracle.DataAccess.Client.OracleConnection _Conn = new Oracle.DataAccess.Client.OracleConnection(_ConnectionString))
            {
                OracleDataAdapter da = new OracleDataAdapter();
                OracleCommand cmd = new OracleCommand();
                cmd.Connection = _Conn;
                cmd.InitialLONGFetchSize = 1000;
                cmd.CommandText = "SP_RESCUMPEDMES";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("pnu_ano", OracleDbType.Int32).Value = Int32Año;
                cmd.Parameters.Add("pva_cliini", OracleDbType.Char).Value = StrClienteInicial;
                cmd.Parameters.Add("pva_clifin", OracleDbType.Char).Value = StrClienteFinal;
                cmd.Parameters.Add("p_resultset", OracleDbType.RefCursor).Direction = ParameterDirection.Output;

                da.SelectCommand = cmd;

                DataSet _Bind = new DataSet();
                da.Fill(_Bind, "MyDataBinding");

                _Conn.Close();

                return _Bind;
            }
        }
        #endregion
        #region Eventos Formulario
        private void TbxAño_TextChanged(object sender, TextChangedEventArgs e)
        {
            try
            {
                PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), "ZZZ");
            }
            catch
            {

            }
        }
        private void TxbCodigoCliente_TextChanged(object sender, TextChangedEventArgs e)
        {
            try
            {
                PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), "ZZZ");
            }
            catch
            {

            }
        }
        private void BtnEnero_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), BtnEnero.Content.ToString());
        }
        private void BtnFebrero_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), BtnFebrero.Content.ToString());
        }
        private void BtnMarzo_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), BtnMarzo.Content.ToString());
        }
        private void BtnTrimestreNumeroUno_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), "T1 ");
        }
        private void BtnAbril_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), BtnAbril.Content.ToString());
        }
        private void BtnMayo_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), BtnMayo.Content.ToString());
        }
        private void BtnJunio_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), BtnJunio.Content.ToString());
        }
        private void BtnTrimestreNumeroDos_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), "T2 ");
        }
        private void BtnSemestreNumeroUno_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), "S1 ");
        }
        private void BtnJulio_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), BtnJulio.Content.ToString());
        }
        private void BtnAgosto_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), BtnAgosto.Content.ToString());
        }
        private void BtnSeptiembre_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), BtnSeptiembre.Content.ToString());
        }
        private void BtnTrimestreNumeroTres_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), "T2 ");
        }
        private void BtnOctubre_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), BtnOctubre.Content.ToString());
        }
        private void BtnNoviembre_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), BtnNoviembre.Content.ToString());
        }
        private void BtnDiciembre_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), BtnDiciembre.Content.ToString());
        }
        private void BtnTrimestreNumeroCuatro_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), "T4 ");
        }
        private void SemestreNumeroDos_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), "S2 ");
        }
        private void BtnConsolidado_Click(object sender, RoutedEventArgs e)
        {
            PubV_BuscarDato(true, TbxAño.Text.Trim(), TxbCodigoCliente.Text.Trim(), "ZZZ");
        }
        #endregion

        private void dataGrid1_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.Enter && elemento != null)
            {
                e.Handled = true;
                elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }

        private void CumplimientoEntregaPedidos_KeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.F3 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta == true) { MDOgeneral.logBusquedadAbierta = false; }
            }

            if (e.Key == Key.F4 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta1 == true) { MDOgeneral.logBusquedadAbierta1 = false; }
            }

            if (e.Key == Key.F5 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta2 == true) { MDOgeneral.logBusquedadAbierta2 = false; }
            }
        }
    }
}
